home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MOS / GEMDOS.D < prev    next >
Encoding:
Modula Definition  |  1990-09-15  |  9.4 KB  |  281 lines

  1. DEFINITION MODULE GEMDOS;
  2.  
  3. (*
  4.  * GEMDOS-Interface nach TDI V3.00
  5.  * Mit Korrekturen und Erweiterungen von Thomas Tempelmann
  6.  *
  7.  * Die Dokumentation wurde direkt von TDI übernommen.
  8.  *
  9.  * Bei jeder Funktion steht im Kommentar zu Beginn ihr Originalname von Atari.
  10.  *
  11.  * Wichtig: Die Term-Routinen (Term0, Term, TermRes) sollte in der Regel
  12.  *  nicht verwendet werden, sonst stattdessen TermProcess aus dem Modul
  13.  *  PrgCtrl, denn sonst werden die Abmelderoutinen (s. CatchProcessTerm)
  14.  *  unter bestimmten Betriebssystemen (KAOS, Mag!X) ggf. nicht ganz
  15.  *  korrekt ausgeführt, zumindest wird dann ein falscher Exit Code geliefert.
  16.  *
  17.  * 'SetOrGet' wurde durch eine korrekte, andere, Definition ersetzt.
  18.  * 'Exec' wurde in 'Pexec' geändert, die Argumente sind nun ADDRESS-Types.
  19.  * 'Term' hat kein BOOLEAN-Result mehr.
  20.  * 'Super' hat eine neue Definition.
  21.  * 'Alloc' hat einen LONGINT-Parameter, um auch -1 übergeben zu können
  22.  * 'Dup' und 'Force' hinzugefügt.
  23.  * 'Xalloc' für den Atari TT hinzugefügt.
  24.  *)
  25.  
  26.  
  27. FROM SYSTEM IMPORT BYTE, ADDRESS;
  28.  
  29. CONST
  30.   (* BIOS error codes *)
  31.   EOK           =   0;
  32.   Error         =  -1;
  33.   EDrvNR        =  -2;         (* Drive not ready *)
  34.   EUnCmd        =  -3;         (* Unknown command *)
  35.   ECRC          =  -4;         (* CRC error *)
  36.   EBadRq        =  -5;         (* Bad request *)
  37.   ESeek         =  -6;         (* Seek error *)
  38.   EMedia        =  -7;         (* Unknown media *)
  39.   ESecNF        =  -8;         (* Sector not found *)
  40.   EPaper        =  -9;         (* No paper *)
  41.   EWritF        = -10;         (* Write fault *)
  42.   EReadF        = -11;         (* Read fault *)
  43.   EGenrl        = -12;         (* General error *)
  44.   EWrPro        = -13;         (* Write protect *)
  45.   EChng         = -14;         (* Media change *)
  46.   EUnDev        = -15;         (* Unknown device *)
  47.   EBadSF        = -16;         (* Bad sectors on format *)
  48.   EOther        = -17;         (* Insert other disk *)
  49.  
  50.   (* BDOS Error codes *)
  51.   EInvFN        = -32;         (* Invalid function number *)
  52.   EFilNF        = -33;         (* File not found *)
  53.   EPthNF        = -34;         (* Path not found *)
  54.   ENHndl        = -35;         (* No handles left *)
  55.   EAccDn        = -36;         (* Access denied *)
  56.   EIHndl        = -37;         (* Invalid handle *)
  57.   ENSMem        = -39;         (* Insufficient memory *)
  58.   EIMBA         = -40;         (* Invalid memory block address *)
  59.   EDrive        = -46;         (* Invaild drive specified *)
  60.   ENMFil        = -49;         (* No more files *)
  61.  
  62.   (* Other errors *)
  63.   ERange        = -64;         (* Range error *)
  64.   EIntrn        = -65;         (* Internal error *)
  65.   EPLFmt        = -66;         (* Invalid program load format *)
  66.   EGSBF         = -67;         (* Setblock failure due to growth restr *)
  67.  
  68.   (*** Konstanten für 'Pexec' ***)
  69.  
  70.   loadExecute = 0;
  71.   load = 3;
  72.   execute = 4;
  73.   createBasepage = 5;
  74.   executeAndFree = 6;  (* neuer Modus ab TOS 1.4 *)
  75.   createBPwMode  = 7;  (* neuer Modus bei Atari TT *)
  76.  
  77.   (*** Modi für 'Xalloc': ***)
  78.  
  79.   stRAMonly = 0;
  80.   fastRAMonly = 1;
  81.   stRAMprefered = 2;
  82.   fastRAMprefered = 3;
  83.  
  84.  
  85. TYPE
  86.  
  87.   IOMode = (read, write);
  88.   SeekMode = (beginning, relative, end);
  89.  
  90. (*
  91.  * Diese Type wurde eingeklammert, weil sie falsch von TDI
  92.  * definiert wurde. Stattdessen ist die folg. Definition zu verwenden!
  93.  *
  94.  * SetOrGet = ( set, get );
  95.  *)
  96.  
  97.   TimeAccessMode = ( getTime, setTime );
  98.  
  99.   DiskInfoBuffer = RECORD
  100.                      freeSpace  : LONGCARD; (* in clusters *)
  101.                      clusters   : LONGCARD; (* num on disk *)
  102.                      sectorSize : LONGCARD; (* in bytes *)
  103.                      clusterSize: LONGCARD; (* sectors per cluster *)
  104.                    END;
  105.  
  106. PROCEDURE OldTerm ();
  107. (* Achtung: In der Regel stattdessen 'TermProcess(0)' benutzen! *)
  108.  
  109. PROCEDURE ConIn ( VAR Ch: CHAR );
  110. (* 'Cconin': Read character from standard input *)
  111.  
  112. PROCEDURE ConScanIn ( VAR Ch, Scan: CHAR );
  113. (* 'Cconin': Read character and scan code from standard input *)
  114.  
  115. PROCEDURE ConOut ( Ch: CHAR );
  116. (* 'Cconout': Write character to standard output *)
  117.  
  118. PROCEDURE AuxIn ( VAR Ch: CHAR );
  119. (* 'Cauxin': Read character from auxiliary port *)
  120.  
  121. PROCEDURE AuxOut ( Ch: CHAR );
  122. (* 'Cauxout': Write character to auxiliary port *)
  123.  
  124. PROCEDURE PrnOut ( Ch: CHAR );
  125. (* 'Cprnout': Write character to printer port *)
  126.  
  127. PROCEDURE RawIO ( VAR Ch: CHAR; Mode: IOMode );
  128. (* 'Crawio': Raw IO to standard input/output device *)
  129.  
  130. PROCEDURE RawIn ( VAR Ch: CHAR );
  131. (* 'Crawcin': Raw input from standard input *)
  132.  
  133. PROCEDURE RawScanIn ( VAR Ch, Scan: CHAR );
  134. (* 'Crawcin': Raw input of character and scan code from standard input *)
  135.  
  136. PROCEDURE NecIn ( VAR Ch: CHAR );
  137. (* 'Cnecin': Read character from standard input with no echo *)
  138.  
  139. PROCEDURE ConWS ( REF String: ARRAY OF CHAR );
  140. (* 'Cconws': Write null terminated string to standard output device *)
  141.  
  142. PROCEDURE ConRS ( VAR String: ARRAY OF BYTE );
  143. (* 'Cconws': Read edited string from standard input device *)
  144.  
  145. PROCEDURE ConIS (): BOOLEAN;
  146. (* 'Cconis': Return status of standard input *)
  147.  
  148. PROCEDURE SetDrv ( Drive: CARDINAL; VAR DriveMap: LONGCARD );
  149. (* 'Dsetdrv': Set default drive *)
  150.  
  151. PROCEDURE ConOS (): BOOLEAN;
  152. (* 'Cconos': Return output status of standard output *)
  153.  
  154. PROCEDURE PrnOS (): BOOLEAN;
  155. (* 'Cprnos': Return output status of standard printer *)
  156.  
  157. PROCEDURE AuxIS (): BOOLEAN;
  158. (* 'Cauxis': Return status of standard auxiliary *)
  159.  
  160. PROCEDURE AuxOS (): BOOLEAN;
  161. (* 'Cauxos': Return output status of standard auxiliary *)
  162.  
  163. PROCEDURE GetDrv ( VAR Drive: CARDINAL );
  164. (* 'Dgetdrv': Get default drive *)
  165.  
  166. PROCEDURE SetDTA ( Address: ADDRESS );
  167. (* 'Fsetdta': Set disk transfer address *)
  168.  
  169. PROCEDURE GetDate ( VAR Date: CARDINAL );
  170. (* 'Tgetdate': Get Date *)
  171.  
  172. PROCEDURE SetDate ( Date: CARDINAL );
  173. (* 'Tsetdate': Set Date *)
  174.  
  175. PROCEDURE GetTime ( VAR Time: CARDINAL );
  176. (* 'Tgettime': Get Date *)
  177.  
  178. PROCEDURE SetTime ( Time: CARDINAL );
  179. (* 'Tsettime': Set Date *)
  180.  
  181. PROCEDURE GetDTA ( VAR Addr: ADDRESS );
  182. (* 'Fgetdta': Get disk transfer address *)
  183.  
  184. PROCEDURE Version ( VAR Ver: CARDINAL );
  185. (* 'Sversion': Get version number *)
  186.  
  187. PROCEDURE TermRes ( NumBytes: LONGCARD; ExitCode: INTEGER );
  188. (* 'Ptermres': Terminate and stay resident *)
  189.  
  190. PROCEDURE DFree (VAR InfoBuffer: DiskInfoBuffer; Drive: CARDINAL );
  191. (* 'Dfree': Get drive free space *)
  192.  
  193. PROCEDURE DirCreate ( REF Path: ARRAY OF CHAR ): BOOLEAN;
  194. (* 'Dcreate': Create a subdirectory *)
  195.  
  196. PROCEDURE DirDelete ( REF Path: ARRAY OF CHAR ): BOOLEAN;
  197. (* 'Ddelete': Delete a subdirectory *)
  198.  
  199. PROCEDURE SetPath ( REF Path: ARRAY OF CHAR ): BOOLEAN;
  200. (* 'Dsetpath': Set current directory *)
  201.  
  202. PROCEDURE Create ( REF Name: ARRAY OF CHAR; Attr: CARDINAL;
  203.                    VAR Handle: INTEGER  );
  204. (* 'Fcreate': Create a file *)
  205.  
  206. PROCEDURE Open ( REF Name: ARRAY OF CHAR; Mode: CARDINAL;
  207.                  VAR Handle: INTEGER );
  208. (* 'Fopen': Open a file *)
  209.  
  210. PROCEDURE Close ( Handle: INTEGER ): BOOLEAN;
  211. (* 'Fclose': Close a file *)
  212.  
  213. PROCEDURE Read ( Handle: INTEGER; VAR Count: LONGCARD; Buffer: ADDRESS );
  214. (* 'Fread': Read file *)
  215.  
  216. PROCEDURE Write ( Handle: INTEGER; VAR Count: LONGCARD; Buffer: ADDRESS );
  217. (* 'Fwrite': Write file *)
  218.  
  219. PROCEDURE Delete ( REF Name: ARRAY OF CHAR ): BOOLEAN;
  220. (* 'Fdelete': Delete file *)
  221.  
  222. PROCEDURE Seek ( Offset: LONGINT; Handle: INTEGER; Mode: SeekMode;
  223.                  VAR Position: LONGINT );
  224. (* 'Fseek': Seek file pointer *)
  225.  
  226. PROCEDURE Attrib ( REF Name: ARRAY OF CHAR; getOrSet: TimeAccessMode;
  227.                    VAR Attr: CARDINAL );
  228. (* 'Fattrib': Get/Set file attributes *)
  229.  
  230. PROCEDURE Dup ( stdHandle: INTEGER; VAR newHandle: INTEGER );
  231. (* 'Fdup': Liefert eine Kopie eines Standard-Handles (0-5) *)
  232.  
  233. PROCEDURE Force ( stdHandle, newHandle: INTEGER ): BOOLEAN;
  234. (* 'Fforce': Läßt 'stdHandle' auf 'newHandle' verweisen *)
  235.  
  236. PROCEDURE GetPath ( VAR PathName: ARRAY OF CHAR; Drive: CARDINAL );
  237. (* 'Dgetpath': Get current directory *)
  238.  
  239. PROCEDURE Alloc ( Bytes: LONGINT; VAR Addr: ADDRESS );
  240. (* 'Malloc': Allocate memory, 'bytes = -1' returns amount of largest block *)
  241.  
  242. PROCEDURE Free ( Addr: ADDRESS ): BOOLEAN;
  243. (* 'Mfree': Free memory *)
  244.  
  245. PROCEDURE Shrink ( Addr: ADDRESS; NewSize: LONGCARD ): BOOLEAN;
  246. (* 'Mshrink': Shrink size of allocated memory *)
  247.  
  248. PROCEDURE Pexec ( Mode: CARDINAL; Name, Arguments, Environment: ADDRESS;
  249.                   VAR Result: LONGINT );
  250. (* 'Pexec': Load or execute a process *)
  251.  
  252. PROCEDURE Term ( Code: INTEGER );
  253. (* Achtung: In der Regel stattdessen 'TermProcess(Code)' benutzen! *)
  254.  
  255. PROCEDURE SFirst ( REF Name: ARRAY OF CHAR; Attr: CARDINAL;
  256.                    VAR Result: INTEGER );
  257. (* 'Fsfirst': Search for first file *)
  258.  
  259. PROCEDURE SNext ( VAR Result: INTEGER );
  260. (* 'Fsnext': Search for next file *)
  261.  
  262. PROCEDURE Rename ( REF CurrentName, NewName: ARRAY OF CHAR );
  263. (* 'Frename': Rename a file *)
  264.  
  265. PROCEDURE DaTime ( Handle: INTEGER; Buffer: ADDRESS; getOrSet: TimeAccessMode );
  266. (* 'Fdatime': Get/Set file date and time stamp *)
  267.  
  268. PROCEDURE Super (stack: LONGINT): LONGINT;
  269. (* 'Super':
  270.  * Ist 'stack' Null, wird in den Supervisormode gelangt und ein Wert
  271.  * geliefert, der beim Zurückschalten in den Usermode hier wieder angegeben
  272.  * werden muß.
  273.  * Ist 'stack' Eins, wird der aktuelle Modus geliefert: Null für den
  274.  * Usermode, -1 für den Supervisormode.
  275.  *)
  276.  
  277. PROCEDURE Xalloc ( Bytes: LONGINT; mode: CARDINAL; VAR Addr: ADDRESS );
  278. (* 'Mxalloc': Erweiterte Alloc-Funktion für den Atari TT. *)
  279.  
  280. END GEMDOS.
  281.